package org.dromara.system.domain.bo;

import org.dromara.system.domain.WbRelationships;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 节点关系业务对象 wb_relationships
 *
 * @author Lion Li
 * @date 2024-09-22
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WbRelationships.class, reverseConvertGenerate = false)
public class WbRelationshipsBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 关系ID
     */
    @NotBlank(message = "关系ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String relationshipId;

    /**
     * 开始节点ID
     */
    @NotBlank(message = "开始节点ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String startNode;

    /**
     * 开始节点名称
     */
    @NotBlank(message = "开始节点名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String startNodeName;

    /**
     * 开始节点状态
     */
    @NotBlank(message = "开始节点状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String startNodeStatus;

    /**
     * 开始节点标签
     */
    @NotBlank(message = "开始节点标签不能为空", groups = { AddGroup.class, EditGroup.class })
    private String startNodeLabels;

    /**
     * OWN-法定代表人 INVEST_H-参股（人） INVEST_C-参股（公司）OWN_C-法定代表人（公司） BRANCH-分支机构 SERVE-任职（展示具体职位）
     */
    @NotBlank(message = "OWN-法定代表人 INVEST_H-参股（人） INVEST_C-参股（公司）OWN_C-法定代表人（公司） BRANCH-分支机构 SERVE-任职（展示具体职位）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String type;

    /**
     * 尾部节点ID
     */
    @NotBlank(message = "尾部节点ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String endNode;

    /**
     * 尾部节点名称
     */
    @NotBlank(message = "尾部节点名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String endNodeName;

    /**
     * 尾部节点状态
     */
    @NotBlank(message = "尾部节点状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String endNodeStatus;

    /**
     * 尾部节点标签
     */
    @NotBlank(message = "尾部节点标签不能为空", groups = { AddGroup.class, EditGroup.class })
    private String endNodeLabels;

    /**
     * 占比
     */
    @NotBlank(message = "占比不能为空", groups = { AddGroup.class, EditGroup.class })
    private String percent;

    /**
     * 关系标签
     */
    @NotBlank(message = "关系标签不能为空", groups = { AddGroup.class, EditGroup.class })
    private String relationshipLabels;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
